home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / libraries / defines.lib.php < prev    next >
PHP Script  |  2005-04-16  |  7KB  |  204 lines

  1. <?php
  2. /* $Id: defines.lib.php,v 2.33.2.2 2005/04/16 17:36:22 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. /**
  6.  * DEFINES VARIABLES & CONSTANTS
  7.  * Overview:
  8.  *    PMA_VERSION              (string) - phpMyAdmin version string
  9.  *    PMA_THEME_VERSION        (int)    - phpMyAdmin theme version integer
  10.  *    PMA_THEME_GENERATION     (int)    - phpMyAdmin theme generation integer
  11.  *    PMA_PHP_INT_VERSION      (int)    - eg: 30017 instead of 3.0.17 or
  12.  *                                        40006 instead of 4.0.6RC3
  13.  *    PMA_IS_WINDOWS           (bool)   - mark if phpMyAdmin running on windows
  14.  *    PMA_IS_IIS               (bool)   - true is phpMyAdmin is running
  15.  *                                        on Microsoft IIS server
  16.  *    PMA_IS_GD2               (bool)   - true if GD2 is present
  17.  *    PMA_USR_OS               (string) - the plateform (os) of the user
  18.  *    PMA_USR_BROWSER_AGENT    (string) - the browser of the user
  19.  *    PMA_USR_BROWSER_VER      (double) - the version of this browser
  20.  */
  21. // phpMyAdmin release
  22. if (!defined('PMA_VERSION')) {
  23.     define('PMA_VERSION', '2.6.2-pl1');
  24. }
  25.  
  26. if (!defined('PMA_THEME_VERSION')) {
  27.     define('PMA_THEME_VERSION', 2);
  28. }
  29.  
  30. if (!defined('PMA_THEME_GENERATION')) {
  31.     define('PMA_THEME_GENERATION', 1);
  32. }
  33.  
  34. // php version
  35. if (!defined('PMA_PHP_INT_VERSION')) {
  36.     if (!preg_match('@([0-9]{1,2}).([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match)) {
  37.         $result = preg_match('@([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match);
  38.     }
  39.     if (isset($match) && !empty($match[1])) {
  40.         if (!isset($match[2])) {
  41.             $match[2] = 0;
  42.         }
  43.         if (!isset($match[3])) {
  44.             $match[3] = 0;
  45.         }
  46.         define('PMA_PHP_INT_VERSION', (int)sprintf('%d%02d%02d', $match[1], $match[2], $match[3]));
  47.         unset($match);
  48.     } else {
  49.         define('PMA_PHP_INT_VERSION', 0);
  50.     }
  51.     define('PMA_PHP_STR_VERSION', phpversion());
  52. }
  53.  
  54. // Whether the os php is running on is windows or not
  55. if (!defined('PMA_IS_WINDOWS')) {
  56.     if (defined('PHP_OS') && stristr(PHP_OS, 'win')) {
  57.         define('PMA_IS_WINDOWS', 1);
  58.     } else {
  59.         define('PMA_IS_WINDOWS', 0);
  60.     }
  61. }
  62.  
  63. // Whether the Web server php is running on is IIS
  64. if (!defined('PMA_IS_IIS')) {
  65.     if (isset($_SERVER['SERVER_SOFTWARE'])
  66.     && stristr($_SERVER['SERVER_SOFTWARE'], 'Microsoft/IIS')) {
  67.         define('PMA_IS_IIS', 1);
  68.     } else {
  69.         define('PMA_IS_IIS', 0);
  70.     }
  71. }
  72.  
  73. function PMA_dl($module) {
  74.     if (!isset($GLOBALS['PMA_dl_allowed'])) {
  75.         if (!@ini_get('safe_mode') && @ini_get('enable_dl') && @function_exists('dl')) {
  76.             ob_start();
  77.             phpinfo(INFO_GENERAL); /* Only general info */
  78.             $a = strip_tags(ob_get_contents());
  79.             ob_end_clean();
  80.             /* Get GD version string from phpinfo output */
  81.             if (preg_match('@Thread Safety[[:space:]]*enabled@', $a)) {
  82.                 if (preg_match('@Server API[[:space:]]*\(CGI\|CLI\)@', $a)) {
  83.                     $GLOBALS['PMA_dl_allowed'] = TRUE;
  84.                 } else {
  85.                     $GLOBALS['PMA_dl_allowed'] = FALSE;
  86.                 }
  87.             } else {
  88.                 $GLOBALS['PMA_dl_allowed'] = TRUE;
  89.             }
  90.         } else {
  91.             $GLOBALS['PMA_dl_allowed'] = FALSE;
  92.         }
  93.     }
  94.     if (PMA_IS_WINDOWS) {
  95.         $suffix = '.dll';
  96.     } else {
  97.         $suffix = '.so';
  98.     }
  99.     if ($GLOBALS['PMA_dl_allowed']) {
  100.         return @dl($module . $suffix);
  101.     } else {
  102.         return FALSE;
  103.     }
  104. }
  105.  
  106. // Whether GD2 is present
  107. if (!defined('PMA_IS_GD2')) {
  108.     if ($cfg['GD2Available'] == 'yes') {
  109.         define('PMA_IS_GD2', 1);
  110.     } elseif ($cfg['GD2Available'] == 'no') {
  111.         define('PMA_IS_GD2', 0);
  112.     } else {
  113.         if (!@extension_loaded('gd')) {
  114.             PMA_dl('gd');
  115.         }
  116.         if (!@function_exists('imagecreatetruecolor')) {
  117.             define('PMA_IS_GD2', 0);
  118.         } else {
  119.             if (@function_exists('gd_info')) {
  120.                 $gd_nfo = gd_info();
  121.                 if (strstr($gd_nfo["GD Version"], '2.')) {
  122.                     define('PMA_IS_GD2', 1);
  123.                 } else {
  124.                     define('PMA_IS_GD2', 0);
  125.                 }
  126.             } else {
  127.                 /* We must do hard way... */
  128.                 ob_start();
  129.                 phpinfo(INFO_MODULES); /* Only modules */
  130.                 $a = strip_tags(ob_get_contents());
  131.                 ob_end_clean();
  132.                 /* Get GD version string from phpinfo output */
  133.                 if (preg_match('@GD Version[[:space:]]*\(.*\)@', $a, $v)) {
  134.                     if (strstr($v, '2.')) {
  135.                         define('PMA_IS_GD2', 1);
  136.                     } else {
  137.                         define('PMA_IS_GD2', 0);
  138.                     }
  139.                 } else {
  140.                     define('PMA_IS_GD2', 0);
  141.                 }
  142.             }
  143.         }
  144.     }
  145. }
  146.  
  147. // Determines platform (OS), browser and version of the user
  148. // Based on a phpBuilder article:
  149. //   see http://www.phpbuilder.net/columns/tim20000821.php
  150. if (!defined('PMA_USR_OS')) {
  151.     if (!empty($_SERVER['HTTP_USER_AGENT'])) {
  152.         $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
  153.     } else if (!isset($HTTP_USER_AGENT)) {
  154.         $HTTP_USER_AGENT = '';
  155.     }
  156.  
  157.     // 1. Platform
  158.     if (strstr($HTTP_USER_AGENT, 'Win')) {
  159.         define('PMA_USR_OS', 'Win');
  160.     } else if (strstr($HTTP_USER_AGENT, 'Mac')) {
  161.         define('PMA_USR_OS', 'Mac');
  162.     } else if (strstr($HTTP_USER_AGENT, 'Linux')) {
  163.         define('PMA_USR_OS', 'Linux');
  164.     } else if (strstr($HTTP_USER_AGENT, 'Unix')) {
  165.         define('PMA_USR_OS', 'Unix');
  166.     } else if (strstr($HTTP_USER_AGENT, 'OS/2')) {
  167.         define('PMA_USR_OS', 'OS/2');
  168.     } else {
  169.         define('PMA_USR_OS', 'Other');
  170.     }
  171.  
  172.     // 2. browser and version
  173.     // (must check everything else before Mozilla)
  174.  
  175.     if (preg_match('@Opera(/| )([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  176.         define('PMA_USR_BROWSER_VER', $log_version[2]);
  177.         define('PMA_USR_BROWSER_AGENT', 'OPERA');
  178.     } else if (preg_match('@MSIE ([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  179.         define('PMA_USR_BROWSER_VER', $log_version[1]);
  180.         define('PMA_USR_BROWSER_AGENT', 'IE');
  181.     } else if (preg_match('@OmniWeb/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  182.         define('PMA_USR_BROWSER_VER', $log_version[1]);
  183.         define('PMA_USR_BROWSER_AGENT', 'OMNIWEB');
  184.     //} else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
  185.     // Konqueror 2.2.2 says Konqueror/2.2.2
  186.     // Konqueror 3.0.3 says Konqueror/3
  187.     } else if (preg_match('@(Konqueror/)(.*)(;)@', $HTTP_USER_AGENT, $log_version)) {
  188.         define('PMA_USR_BROWSER_VER', $log_version[2]);
  189.         define('PMA_USR_BROWSER_AGENT', 'KONQUEROR');
  190.     } else if (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)
  191.                && preg_match('@Safari/([0-9]*)@', $HTTP_USER_AGENT, $log_version2)) {
  192.         define('PMA_USR_BROWSER_VER', $log_version[1] . '.' . $log_version2[1]);
  193.         define('PMA_USR_BROWSER_AGENT', 'SAFARI');
  194.     } else if (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
  195.         define('PMA_USR_BROWSER_VER', $log_version[1]);
  196.         define('PMA_USR_BROWSER_AGENT', 'MOZILLA');
  197.     } else {
  198.         define('PMA_USR_BROWSER_VER', 0);
  199.         define('PMA_USR_BROWSER_AGENT', 'OTHER');
  200.     }
  201. }
  202.  
  203. ?>
  204.